main(List<String> args) {
  /**
   * forEach打印List
   */
  List list1 = [3, 1, 2, 3, 4, 5];

  // 一般使用
  // list1.forEach((value) {
  //   print(value);
  // });

  // 使用箭头函数：里面只能有一句话
  // list1.forEach((value) => print(value));

  /**
   * List中的值大于2，就乘以2
   */
  List list2 = [3, 1, 2, 3, 4, 5];

  // 一般方法
  // var newList = list2.map((value) {
  //   if (value > 2) {
  //     return value * 2;
  //   } else {
  //     return value;
  //   }
  // });

  var newList = list2.map((value) => value > 2 ? value * 2 : value);

  // 使用箭头函数

  print(newList.toList());

  /**
   * 函数的相互调用
   * 
   * 1、定义一个方法isEvenNum来判断一个数是否是偶数
   * 2、定义一个方法打印1-n以内所有的偶数
   */
  bool isEvenNum(int n) {
    if (n % 2 == 0) {
      return true;
    }
    return false;
  }

  printNum(int n) {
    for (var i = 1; i <= n; i++) {
      if (isEvenNum(i)) {
        print(i);
      }
    }
  }

  printNum(10);

  // 匿名方法
  var printNum1 = () {
    print(123);
  };

  // 自执行方法
  ((int n) {
    print("自执行方法");
    print(n);
  })(12);

  // 递归
  var sum = 1;
  fun(n) {
    sum *= n;
    if (n == 1) {
      return;
    }
    fun(n - 1);
  }

  fun(5);

  print(sum);

  // 递归求1-100的和
  var sum1 = 0;
  fun2(int n) {
    sum1 += n;
    if (n == 0) {
      return;
    }
    fun2(n - 1);
  }

  fun2(100);
  print(sum1);
}
